#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#       cargar_diccionario.py
#       
#       Copyright 2011
#       
#       This program is free software; you can redistribute it and/or modify
#       it under the terms of the GNU General Public License as published by
#       the Free Software Foundation; either version 2 of the License, or
#       (at your option) any later version.
#       
#       This program is distributed in the hope that it will be useful,
#       but WITHOUT ANY WARRANTY; without even the implied warranty of
#       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#       GNU General Public License for more details.
#       
#       You should have received a copy of the GNU General Public License
#       along with this program; if not, write to the Free Software
#       Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#       MA 02110-1301, USA.
#       
#       

import b_tree

def construir_arbol(lista_de_palabras):
  """ Construccion de arbol binario con palabras del diccionario

  @param PARAM: Lista de palabras en memoria.
  @return RETURN: Arbol con palabras.
  """
    
  BTree = b_tree.CBOrdTree()
  # Agrego nodo raiz
  root = BTree.addNode(0, 'raiz')
  # Agrego palabras
  i=0
  for palabra in lista_de_palabras:
    identificador = 0
    
    for caracter in palabra:
      identificador+=ord(caracter)
  
    BTree.insert(root, identificador, palabra)
    print i
    i+=1
  data = raw_input("palabra a buscar: ")
  identificador = 0

  for caracter in data:
      identificador+=ord(caracter)
  
  if BTree.lookup(root, identificador):
        print "found"
  else:
        print "not found"
  
def cargar_en_memoria():
  """ Funcion encargada de extraer palabras de la lista y alamacenarlas en memoria

  @param PARAM: Sin parametros de entrada.
  @return RETURN: Lista de palabras en memoria.
  """
  lista_de_palabras = []
  archivo=open('files/es_cl_of.dic', 'r')
  archivo.readline() #omite el numero de palabras al inicio del archivo
  while 1:

    palabra = archivo.readline()
    palabra = palabra[:palabra.find('/')] #Quita lo que esta despues de /
    lista_de_palabras.append(palabra)
    if not palabra:
      break
    
  return lista_de_palabras[:-1]
    
print cargar_en_memoria()
construir_arbol(cargar_en_memoria())
